﻿Imports System.Web
Imports Miron.Framework.Seguranca.Dominio

Namespace Seguranca.Servico

    ''' <summary>
    ''' Interface de autenticação de serviço.
    ''' </summary>
    ''' <remarks></remarks>
    Public Interface IAutenticacaoServico

        Property CampoSenha() As String

        ''' <summary>
        ''' Identifica se o usuário está cadastrado no sistema acadêmico.
        ''' </summary>
        ''' <returns>Usuário cadastrado ou Nothing, caso não seja encontrado.</returns>
        <Obsolete("Não será dado suporte em versões futuras.")> _
        Function AutenticaUsuario(ByVal _login As String, ByVal _senha As String) As Usuario

        ''' <summary>
        ''' Identifica se o usuário está com acesso bloqueado no sistema acadêmico.
        ''' </summary>
        ''' <returns>Verdadeiro ou Falso, de acordo com a situação de bloqueio do usuário.</returns>
        <Obsolete("Não haverá suporte futuro a essa funcionalidade. Utilize o método AUTENTICA.")> _
        Function UsuarioEstaBloqueado(ByVal _login As String) As Boolean

        ''' <summary>
        ''' Identifica se o usuário já está autenticado no Sistema Acadêmico (núcleo) ou no módulo (aba) do SigaDois.
        ''' Caso esteja apenas no núcleo, cria informações de contexto para torná-lo autenticado também no 
        ''' SigaDois.
        ''' </summary>
        <Obsolete("Não haverá suporte futuro a essa funcionalidade.")> _
        Function UsuarioEstaAutenticado(ByVal _httpContext As HttpContext) As Boolean

        ''' <summary>
        ''' Obtém nome do usuário autenticado.
        ''' </summary>
        ''' <returns>
        ''' Nome do usuário ou Nothing (null) caso não autenticado.
        ''' </returns>
        Function ObtemNomeUsuarioAutenticado() As String

        ''' <summary>
        ''' Obtém endereço IP do cliente cujo usuário está autenticado.
        ''' </summary>
        ''' <returns>alm
        ''' Endereço IP ou Nothing (null) caso não autenticado.
        ''' </returns>
        Function ObtemIPUsuarioAutenticado() As String

        ''' <summary>
        ''' Obtém o valor de chave do Perfil do usuário logado, dada uma chave.
        ''' </summary>
        ''' <returns>
        ''' Valor da chave informada, pertencente ao usuário logado, ou Nothing, caso não haja.
        ''' </returns>
        Function ObtemPerfilValorPorPerfilChave(ByVal _chave As String) As String

        ''' <summary>
        ''' Obtém o valor de chave da Sessão do usuário logado, dada uma chave.
        ''' </summary>
        ''' <returns>
        ''' Valor da chave informada, pertencente ao usuário logado, ou Nothing, caso não haja.
        ''' </returns>
        Function ObtemSessaoValorPorSessaoChave(ByVal _chave As String) As String

        ''' <summary>
        ''' Obtém usuário da sessão e registra-o no contexto http.
        ''' </summary>
        Function RecuperaContextoUsuario(ByVal _httpContext As HttpContext) As Boolean

        ''' <summary>
        ''' Obtém usuário do contexto http e persiste-o na sessão.
        ''' </summary>
        Function PersisteContextoUsuario(ByVal _httpContext As HttpContext) As Boolean


        '''' <summary>
        '''' Alteração de senha do usuário
        '''' </summary>
        '''' <param name="_login">String</param>
        '''' <param name="_senha">String</param>
        '''' <remarks></remarks>
        '<Obsolete("Não será dado suporte em versões futuras.")> _
        'Sub AlterarSenha(ByVal _login As String, ByVal _senha As String)

        Sub AlterarSenha(ByVal _login As String, ByVal _senhaAtual As String, ByVal _novaSenha As String, Optional ByVal _confirmacaoNovaSenha As String = "")

        Function GerarSenhaForte() As String

        Function SenhaEhForte(ByVal _senha As String) As Boolean

        Function RetornarNotaSenha(ByVal _senha As String) As Integer

        Function Autentica(ByVal _login As String, ByVal _senha As String) As ResultadoAutenticacao

        Sub AlterarDataExpiracaoSenha(ByVal _login As String, ByVal _novaData As Date)

    End Interface

End Namespace